In conventional large-scale computer systems, data is managed with the use of special-purpose data input/output devices configured independently of the host computer. Among the data input/output devices, storage devices form a Redundant Arrays of Independent (Inexpensive) Disks (RAID) group with hard disk drives (storage media), to increase the reliability of the data they are handling.
A storage device normally performs a write operation (a writing operation) of a so-called write-back method, to improve access performance. Specifically, where a storage device has received a data write instruction from the host computer as a host device, the storage device notifies the host computer that the write operation has been completed, when storing data into a cache memory. After that, when predetermined conditions are satisfied, the storage device stores the data stored in the cache memory into a hard disk drive.
Some of the storage devices using this write-back method are designed not to lose the data stored in volatile cache memories even when the power is turned off without a normal ending operation due to a blackout or the like (hereinafter, power cutting without a normal ending operation will be referred to as an “abnormal end”).
Specifically, when a storage device ends abnormally, the data in the cache memory is saved into a nonvolatile memory while power is being supplied from a large-capacity capacitor or battery, and the data saved in the nonvolatile memory is restored to the cache memory when power is turned on after the abnormal end. In this manner, data cannot be lost even when a storage device abnormally ends while the data stored in the cache memory is not stored in a hard disk drive.
Nonvolatile memories into which data is to be saved are normally NAND flash memories. NAND flash memories sometimes damage or lose stored data due to cell degradation or the like. When the data stored in a nonvolatile memory is damaged or lost, the storage device reads wrong data from the nonvolatile memory at the time of activation after an abnormal end, and fails to restore data accurately.
To counter this problem, an error may be detected from the data stored in a storage medium, and a data correction may be performed at the time of the error detection (see Japanese National Publication of International Patent Application No. 2004-506256 and Japanese Laid-open Patent Publication No. 2007-193449, for example). By such a technique, the data saved in a nonvolatile memory can be restored to the cache memory at the time of activation after an abnormal end.
However, where there is not a read response from a nonvolatile memory even when the technique disclosed in Japanese National Publication of International Patent Application No. 2004-506256 and Japanese Laid-open Patent Publication No. 2007-193449 is utilized, the data saved in the nonvolatile memory cannot be accurately restored to the cache memory. Depending on the degradation of the nonvolatile memory, a read response might not be made from the nonvolatile memory. Such a situation results in a hung-up state, and a data correcting operation is not performed.
Large-scale data input/output devices such as storage devices are often used in important computer systems, and therefore, not being able to accurately restore the user data and system data stored in a cache memory leads to a serious problem. Therefore, how to restore accurately the data stored in a nonvolatile memory to the cache memory even when there is not a read response from a nonvolatile memory has been a crucial issue.